<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/*message model by StevenY.*/
class Mes extends CI_Model {
	
	var $err_code;
	var $err_msg;
	var $uid;
	
	function __construct()
	{
		parent::__construct();
		if ($this->session->userdata('login'))
		{
			// 已经成功登陆
			$this->uid = $this->session->userdata('uid');
		}
	}
	
	//发送,回复个人信息
	//$id:信息接收人的uid, $text:信息内容
	function sendto($id,$title,$text)
	{
		//验证信息
		//id是否有效,是否为gid
		$da=$this->db->get_where('user',array('id'=>$id))->row_array();
		if ( (! isset($da['id'])) || ($da['group']) )
		{
			$this->err_code=101;
			$this->err_msg='接受者用户ID错误';
			return FALSE;
		}
				
		//将$text的信息过滤
		$this->load->library('security');
		$text=$this->security->xss_clean($text);
		$title=$this->security->xss_clean($title);
		
		//将信息记录进数据库		
		$data=array('uid_from'=>$this->uid,
					'uid_to'=>$id,
					'title'=>$title,
					'msg'=>$text,
					'time'=>date('Y-m-d H-i-s',time()),
					'notice'=>FALSE,
					'status_read'=>FALSE
					);
		$this->db->set($data);
		
		if(! $this->db->insert('msg'))
		{
			$this->err_code=102;
			$this->err_msg='写入数据库错误...';
			return FALSE;
		}
		else  
		{
			$this->err_code=0;
			$this->err_msg='Success';
			return TRUE;
		}  		
	}
		
	//获取当前用户的信息与$eid的信息
	function get_msg($eid,$lim,$off)
	{
		//检查$eid是否有效
		$d=$this->db->get_where('user',array('id'=>$eid))->row_array();
		if (!(isset($d['id']) && ($d['group'])))
		{
			$this->err_code=201;
			$this->err_msg='错误ID信息';
			return FALSE;
		}
		
		//检查权限
		//$this->user->get_auth();
		
		//检查$lim和$off是否合法
		if (! (is_int($lim) && is_int($off)))
		{
			$this->err_code=203;
			$this->err_msg='错误参数信息';
			return FALSE;
		}
		
		//获取信息
		$message=$this->db->get_where('msg',array('uid_from'=>$this->uid,'uid_to'=>$eid),$lim,$off)->result_array();
		$this->err_code=0;
		$this->err_msg='SUCCESS';
		return $message;
	}
			
	//获取当前用户与$gid的通知
	function get_not($gid,$lim,$off)
	{
		//检查$gid是否有效
		if ($this->db->get_where('user_sub',array('uid'=>$this->uid,'gid'=>$gid))->num_rows()!=1)
		{
			$this->err_code=301;
			$this->err_msg='错误ID信息';
			return FALSE;
		}
		
		//检查权限
		//$this->user->get_auth();
		
		//检查$lim和$off是否合法
		if (! (is_int($lim) && is_int($off)))
		{
			$this->err_code=303;
			$this->err_msg='错误参数信息';
			return FALSE;
		}
		
		//获取信息
		$message=$this->db->get_where('msg',array('uid_from'=>$this->uid,'uid_to'=>$gid),$lim,$off)->result_array();
		$this->err_code=0;
		$this->err_msg='SUCCESS';
		return $message;

	}
	
	//获取当前用户的信息列表
	function get_msg_list()
	{
		//获取发送到当前用户以及当前用户发送出去的信息
		$this->db->where(array('uid_from'=>$this->uid,'notice'=>FALSE));
		$this->db->or_where(array('uid_to'=>$this->uid,'notice'=>FALSE));
		$da=$this->db->get('msg')->result_array();
		
		//将信息整理成数组$list
		foreach($da as $i=>$item)
		{
			//取出信息对象ID
			if ($item['uid_from']==$this->uid)
			{
				$o=$item['uid_to'];
			}
			else
			{
				$o=$item['uid_from'];
			}
			
			if (isset($list[$o]))
			{
				$list[$o]['num']+=1;
				$list[$o][$item['id']]['content']=$item['msg'];
				$list[$o][$item['id']]['time']=$item['time'];	
			}
			else
			{
				$list[$o]['num']=1;
				$list[$o][$item['id']]['content']=$item['msg'];
				$list[$o][$item['id']]['time']=$item['time'];	
			}
		}
		
		$this->err_code=0;
		$this->err_msg='SUCCESS';
		return $list;
	}
	
	//获取当前用户通知列表
	//$lim和$off为单组通知的$lim和$off
	function get_not_list($lim,$off)
	{
		//检查$lim和$off是否合法
		if (! (is_int($lim) && is_int($off)))
		{
			$this->err_code=303;
			$this->err_msg='错误参数信息';
			return FALSE;
		}
		
		$g=$this->db->get_where('user_sub',array('uid'=>$this->uid))->result_array();
		
		//用户组所有组是否隶属于这个组?...如果不隶属则没有获得改用户所拥有的用户组的通知
		foreach($g as $i=>$item)
		{
			$list[$item['gid']]=$this->db->get_where('msg',array('uid_to'=>$item['gid']),$lim,$off)->result_array();
		}
		
		$this->err_code=0;
		$this->err_msg='SUCCESS';
		return $list;
	}

	
	//删除信息
	//$mid为msg的id
	function delmsg($mid)
	{
		//验证用户权限
		//$this->user->get_auth();
		
		if ($this->db->delete('msg',array('id'=>$mid)))
		{
			$this->err_code=0;
			$this->err_msg='SUCCESS';
			return TRUE;
		}
		else
		{
			$this->err_code=601;
			$this->err_msg='删除失败';
			return TRUE;
		}
	}
	
	//发送通知(其实也就是群发信息)
	//$gid为发送到的用户组的gid,
	function  notice($gid,$title,$text)
	{
		//验证权限
		//$this->user->get_auth();
		
		//验证信息
		//id是否有效,是否为gid
		$da=$this->db->get_where('user',array('id'=>$gid))->row_array();
		if ( (! isset($da['id'])) || (! $da['group']) )
		{
			$this->err_code=701;
			$this->err_msg='接受者用户组ID错误';
			return FALSE;
		}
				
		//将$text的信息过滤
		$this->load->library('security');
		$text=$this->security->xss_clean($text);
		$title=$this->security->xss_clean($title);
		
		//将信息记录进数据库		
		$data=array('uid_from'=>$this->uid,
					'uid_to'=>$gid,
					'title'=>$title,
					'msg'=>$text,
					'notice'=>TRUE
					);
		$this->db->set($data);
		
		if(! $this->db->insert('msg'))
		{
			$this->err_code=702;
			$this->err_msg='写入数据库错误...';
			return FALSE;
		}
		else  
		{
			$this->err_code=0;
			$this->err_msg='Success';
			return TRUE;
		} 		
	}
	
	//删除通知
	//$nid为要删除的通知的id
	function delnotice($nid)
	{
		//验证权限
		//$this->user->get_auth();
		
		if ($this->db->delete('msg',array('id'=>$nid)))
		{
			$this->err_code=0;
			$this->err_msg='SUCCESS';
			return TRUE;
		}
		else
		{
			$this->err_code=801;
			$this->err_msg='删除失败';
			return TRUE;
		}
	}
	
	//返回错误代码
	function get_err_code()
	{
		return $this->err_code;
	}
	
	//返回错误信息
	function get_err_msg()
	{
		return $this->err_msg;
	}
}
/*END OF FILE MSG.PHP */